#include <pic.h>
#include <idt.h>
#include <vga.h>
#include <mm.h>
#include <sched.h>
#include <gdt.h>
#include <debug.h>
#include <loader.h>
#include <syscalls.h>
#include <i386.h>

extern void* _end;

/* Entry-point del modo protegido luego de cargar los registros de
 * segmento y armar un stack */
 
void kernel_init(void)
{
    vga_init();
    
    vga_printf("Inicializando estructuras de la IDT... ");
    idt_init();
    vga_printf("Hecho\n");
    
    vga_printf("Inicializando estructuras de la MMU... ");
    mm_init();
    vga_printf("Hecho\n");
    
    vga_printf("Cantidad de RAM: %d KB\n", mm_ram_amount());
    
    vga_printf("Inicializando estructuras del scheduler... ");
    sched_init();
    vga_printf("Hecho\n");
    
    sched_load(0);
    sched_load(1);
    sched_load(2);
    sched_load(10);
    
	breakpoint();
	
}
